This invention relates to data storage systems, such as hierarchical RAID (Redundant Array of Inexpensive Disks) data storage systems. More particularly, this invention relates to a method and apparatus to concurrently operate on multiple data movement operations in a disk array subsystem.
Conventional disk array data storage systems have multiple storage disk drive devices that are arranged and coordinated to form a single mass storage system. The common design goals for these mass storage systems include low cost per megabyte, high input/output performance, and high data availability. Data availability involves the ability to access data stored in the storage system while ensuring continued operation in the event of a disk or component failure. Data availability is typically ensured through the use of redundancy where data, or relationships among data, are stored in multiple locations on the storage system. In the event of failure, redundant data is retrieved from an operable portion of the system and used to regenerate the original data that is lost due to the component failure.
There are two common methods for storing redundant data on disk drives: mirror and parity. In mirror redundancy, data is duplicated and stored in two separate areas of the storage system. In parity redundancy, redundant data is stored in one area of the storage system, but the size of the redundant storage area is less than the remaining storage space used to store the original data.
RAID (Redundant Array of Independent Disks) storage systems are disk array systems in which part of the physical storage capacity is used to store redundant data. RAID systems are typically characterized as one of six architectures, enumerated under the acronym RAID. A RAID 0 architecture is a disk array system that is configured without any redundancy. Since this architecture is really not a redundant architecture, RAID 0 is often omitted from a discussion of RAID systems.
A RAID 1 architecture involves storage disks configured according to mirror redundancy. Original data is stored on one set of disks and a duplicate copy of the data is kept on separate disks. The RAID 2 through RAID 5 architectures all involve parity-type redundant storage. Of particular interest, a RAID 5 system distributes data and parity information across all of the disks. Typically, the disks are divided into equally sized address areas referred to as xe2x80x9cblocksxe2x80x9d. A set of blocks from each disk that have the same unit address ranges are referred to as xe2x80x9cstripesxe2x80x9d. In RAID 5, each stripe has N blocks of data and one parity block which contains redundant information for the data in the N blocks.
In RAID 5, the parity block is cycled across different disks from stripe-to-stripe. For example, in a RAID 5 system having five disks, the parity block for the first stripe might be on the fifth disk; the parity block for the second stripe might be on the fourth disk; the parity block for the third stripe might be on the third disk; and so on. The parity block for succeeding stripes typically xe2x80x9cprecessesxe2x80x9d around the disk drives in a helical pattern (although other patterns are possible). RAID 2 through RAID 4 architectures differ from RAID 5 in how they compute and place the parity block on the disks.
A hierarchical data storage system permits data to be stored according to different techniques. In a hierarchical RAID system, data can be stored according to multiple RAID architectures, such as RAID 1 and RAID 5, to afford tradeoffs between the advantages and disadvantages of the redundancy techniques.
U.S. Pat. No. 5,392,244 to Jacobson et al., entitled xe2x80x9cMemory Systems with Data Storage Redundancy Managementxe2x80x9d, describes a hierarchical RAID system that enables data to be migrated from one RAID type to another RAID type as data storage conditions and space demands change. This patent, which is assigned to Hewlett-Packard Company, describes a multi-level RAID architecture in which physical storage space is mapped into a RAID-level virtual storage space having mirror and parity RAID areas (e.g., RAID 1 and RAID 5). The RAID-level virtual storage space is then mapped into an application-level virtual storage space, which presents the storage space to the user as one large contiguously addressable space. During operation, as user storage demands change at the application-level virtual space, data can be migrated between the mirror and parity RAID areas at the RAID-level virtual space to accommodate the changes. For instance, data once stored according to mirror redundancy may be shifted and stored using parity redundancy, or vice versa. The ""244 patent is hereby incorporated by reference to provide additional background information.
With data migration, the administrator is afforded tremendous flexibility in defining operating conditions and establishing logical storage units (or LUNs). As one example, the RAID system can initially store user data according to the optimum performing RAID 1 configuration. As the user data approaches and exceeds 50% of array capacity, the disk array system can then begin storing data according to both RAID 1 and RAID 5, and dynamically migrating data between RAID 1 and RAID 5 in a continuous manner as storage demands change. At any one time during operation, the data might be stored as RAID 1 or RAID 5 on all of the disks. The mix of RAID 1 and RAID 5 storage changes dynamically with the data I/O (input/output). This allows the system to optimize performance versus an increasing amount of user data.
To facilitate this intelligent memory management, RAID systems typically include a controller with logic to control such operations. One of the limitations of prior art controllers, however, is that they are general purpose controllers that have been programmed to carry out the management tasks. Accordingly, the RAID system is subject to the physical limitations of the available controllers. Some common limitations of prior art RAID controllers include serial processing on all external interfaces, i.e., a First-In First-Out (FIFO) approach, no means by which high-priority transactions can be identified or expedited, and it is often difficult to accommodate multiple clock domains.
Thus, a RAID controller that is not encumbered by the limitations commonly associated with prior art RAID systems is required. One such solution is provided herein.
The present invention is drawn to a method and apparatus to concurrently operate on multiple data movement operations in a disk array subsystem.
According to one embodiment, a disk controller is presented comprising one or more initiators coupled to one or more targets via a transaction bus and a corresponding number of data busses. The initiator(s) receive transaction requests from external logic, buffer the transaction and assign it a unique identifier, which is passed to an appropriate target via the transaction bus. The targets receive and queue the unique identifier until it can process the transaction, at which time it prompts the initiator to provide it the buffered transaction via a data bus. It is to be appreciated that decoupling the processing in this way enables an initiator to service multiple targets independently of one another.
According to one aspect of the invention, the initiator utilizes one or more buffers to store transaction information destined for, or received from, targets. It will be appreciated that the use of such buffers enables the controller to accommodate multiple clock speeds associated with various input/output (I/O) communication media coupled to the controller. In this regard, the innovative controller facilitates data movement across clock synchronization boundaries to support the clock requirements of these different I/O ports.
These and other innovative aspects of the present invention will be evident from the description to follow.